package com.tbynet.jwp.framework.exception;

import com.tbynet.jwp.framework.core.JwpException;

import java.util.Map;

/**
 * 业务异常类（业务规则校验、事务失败）
 * 1. 捕获 Repository 层抛出的 RepositoryException
 * 2. 抛出业务异常 BusinessException（业务规则失败）
 * 3. 不捕获核心异常（如空指针），向上传递
 * 示例：
 * 调用 Repository 层方法时捕获异常，包装为 “创建订单失败” 后抛出；校验库存不足时直接抛出 BusinessException
 * @author 佰亿互联
 * @version 3.1
 * @since 2025-11-04
 */
public class BusinessException extends JwpException {

    private final String bizId; // 业务ID（如订单ID、用户ID，用于定位问题）

    public BusinessException(String message) {
        this("BUSINESS_ERROR", message);
    }

    public BusinessException(String code, String message) {
        this(code, message,  null);
    }

    public BusinessException(String code, String message, Map<String, Object> context) {
        super(code, message, context);
        this.bizId = null;
    }

    public String getBizId() { return bizId; }
}